package com.weeasy.app.service;

import com.weeasy.core.entity.FunctionItem;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 功能管理服务 - 统一管理所有功能模块
 * 
 * @author we-easy
 * @since 1.0.0
 */
@Service
public class FunctionService {

    /**
     * 获取功能列表 - 根据wx-ui的路由配置生成
     * 
     * @return 功能列表
     */
    public List<FunctionItem> getFunctionList() {
        List<FunctionItem> functionList = new ArrayList<>();

        // 根据wx-ui/src/router/index.ts中的路由配置生成功能列表
        functionList.add(FunctionItem.builder()
                .id("home")
                .name("首页")
                .description("应用首页，展示主要功能入口")
                .icon("home")
                .path("/home")
                .enabled(true)
                .sort(1)
                .build());

        functionList.add(FunctionItem.builder()
                .id("login")
                .name("登录")
                .description("微信一键登录功能")
                .icon("login")
                .path("/login")
                .enabled(true)
                .sort(2)
                .build());

        functionList.add(FunctionItem.builder()
                .id("auth")
                .name("认证")
                .description("微信授权登录功能")
                .icon("auth")
                .path("/auth")
                .enabled(true)
                .sort(3)
                .build());

        functionList.add(FunctionItem.builder()
                .id("payment")
                .name("支付")
                .description("微信支付功能")
                .icon("payment")
                .path("/payment")
                .enabled(true)
                .sort(4)
                .build());

        functionList.add(FunctionItem.builder()
                .id("location")
                .name("位置")
                .description("微信定位功能")
                .icon("location")
                .path("/location")
                .enabled(true)
                .sort(5)
                .build());

        functionList.add(FunctionItem.builder()
                .id("qrcode")
                .name("二维码")
                .description("微信二维码生成和扫描功能")
                .icon("qrcode")
                .path("/qrcode")
                .enabled(true)
                .sort(6)
                .build());

        functionList.add(FunctionItem.builder()
                .id("share")
                .name("分享")
                .description("微信分享功能")
                .icon("share")
                .path("/share")
                .enabled(true)
                .sort(7)
                .build());

        return functionList;
    }

    /**
     * 根据ID获取功能详情
     * 
     * @param id 功能ID
     * @return 功能详情
     */
    public FunctionItem getFunctionById(String id) {
        return getFunctionList().stream()
                .filter(function -> function.getId().equals(id))
                .findFirst()
                .orElse(null);
    }

    /**
     * 获取所有功能模块的API列表
     * 
     * @return API列表
     */
    public List<String> getApiList() {
        return Arrays.asList(
                "GET /api/function/list - 获取功能列表",
                "GET /api/function/{id} - 获取功能详情",
                "GET /api/function/apis - 获取API列表",
                "POST /api/login/quick - 一键登录",
                "POST /api/login/auth - 授权登录",
                "GET /api/login/status - 获取登录状态",
                "POST /api/payment/create - 创建支付订单",
                "GET /api/payment/status/{orderId} - 查询支付状态",
                "GET /api/payment/history - 获取支付历史",
                "POST /api/auth/login - 授权登录",
                "GET /api/auth/userinfo - 获取用户信息",
                "POST /api/share/content - 分享内容",
                "GET /api/share/history - 获取分享历史",
                "POST /api/qrcode/generate - 生成二维码",
                "POST /api/qrcode/scan - 扫描二维码",
                "GET /api/location/info - 获取位置信息",
                "POST /api/location/update - 更新位置信息",
                "GET /api/home/info - 获取首页信息",
                "GET /api/home/stats - 获取统计数据");
    }
}
